// DisplayUtils.java
package com.lxt.ScreencastGallery;

import android.graphics.drawable.Drawable;

import androidx.media3.ui.AspectRatioFrameLayout;
import androidx.media3.ui.PlayerView;

/**
 * 显示工具类，处理图片和视频的显示适配
 */
public class DisplayUtils {

    // 显示区域尺寸
    public static final int DISPLAY_WIDTH = AppConfig.DISPLAY_WIDTH;
    public static final int DISPLAY_HEIGHT = AppConfig.DISPLAY_HEIGHT;

    /**
     * 调整图片显示方式
     * 根据需求：
     * 1. 支持图片，缺省铺满宽度
     * 2. 如果图片不够高，垂直方向居中，上下留黑边
     * 3. 如果图片超高，按宽度铺满，顶部对齐
     */
    public static void adjustImageDisplay(ZoomableImageView imageView, Drawable drawable) {
        if (drawable == null) {
            return;
        }

        // 重置缩放，让ZoomableImageView处理缩放逻辑
        imageView.resetZoom();
    }

    /**
     * 计算图片在显示区域中的实际显示尺寸
     */
    public static DisplaySize calculateImageDisplaySize(int imageWidth, int imageHeight) {
        float imageRatio = (float) imageWidth / imageHeight;
        float displayRatio = (float) DISPLAY_WIDTH / DISPLAY_HEIGHT;

        int displayWidth, displayHeight;

        if (imageRatio > displayRatio) {
            // 图片较宽，按宽度铺满
            displayWidth = DISPLAY_WIDTH;
            displayHeight = (int) (DISPLAY_WIDTH / imageRatio);
        } else {
            // 图片较高，按高度铺满
            displayHeight = DISPLAY_HEIGHT;
            displayWidth = (int) (DISPLAY_HEIGHT * imageRatio);
        }

        return new DisplaySize(displayWidth, displayHeight);
    }

    /**
     * 显示尺寸类
     */
    public static class DisplaySize {
        public final int width;
        public final int height;

        public DisplaySize(int width, int height) {
            this.width = width;
            this.height = height;
        }
    }

    /**
     * 调整视频显示方式
     * 根据需求：
     * 1. 缺省宽度对齐（不留黑边）
     * 2. 上下居中显示
     * 3. 支持上下拖动
     */
    public static void adjustVideoDisplay(PlayerView videoView, int videoWidth, int videoHeight) {
        if (videoView == null) return;

        // 设置视频缩放模式为适合宽度，高度自适应
        videoView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);

        // 隐藏控制器，使用自定义触摸事件
        videoView.setUseController(false);
    }

    /**
     * 在 DisplayUtils 中添加视频尺寸计算
     */
    public static DisplaySize calculateVideoDisplaySize(int videoWidth, int videoHeight) {
        // 宽度对齐，计算高度
        int displayWidth = DISPLAY_WIDTH;
        int displayHeight = (int) (DISPLAY_WIDTH * videoHeight / (float) videoWidth);

        return new DisplaySize(displayWidth, displayHeight);
    }
}